package org.rslai.tcedit.business;

import java.io.Serializable;
import org.springframework.transaction.annotation.Transactional;

@Transactional
public interface BaseService {

	/**
	 * 增加一个对象
	 * @param object 要增加的对象
	 */
	void create(Object object);

	/**
	 * 增加一个对象（如果需要根据产品ID选择不同表就要使用此方法）
	 * @param productID 产品ID
	 * @param object 要增加的对象
	 */
	void create(String productID, Object object);

	/**
	 * 删除一个对象
	 * @param object 要删除的对象
	 */
	void delete(Object object);

	/**
	 * 更新一个对象
	 * @param object 要更新的对象
	 */
	void update(Object object);

	/**
	 * 根据ID查询一个对象。
	 * @param clazz 对象类，例如，Book.class。
	 * @param id ID
	 * @return 查询到的对象
	 */
	@Transactional(readOnly = true)
	Object query(Class clazz, Serializable id);

	/**
	 * 根据ID查询一个对象（如果需要根据产品ID选择不同表就要使用此方法）。
	 * @param productID 产品ID
	 * @param clazz 对象类，例如，Book.class。
	 * @param id ID
	 * @return 查询到的对象
	 */
	@Transactional(readOnly = true)
	Object query(String productID, Class clazz, Serializable id);

}
